"""
Type definitions for the cloud storage SDK.

This module contains type aliases and type hints used throughout the SDK.
"""

from typing import Dict, List, Optional, Union, Any, Callable, Tuple
from datetime import datetime

# Basic types
FilePath = str
FolderId = str
FileId = str
UserId = str
Username = str
Email = str
AccessToken = str
RefreshToken = str
AppId = str
AppKey = str
SecretKey = str
ClientId = str
ClientSecret = str
RedirectUri = str
AuthCode = str
Scope = str
SearchQuery = str
ContentHash = str
FileSize = int
Timestamp = int

# Complex types
Headers = Dict[str, str]
Params = Dict[str, Union[str, int]]
JsonDict = Dict[str, Any]
FileMetadata = Dict[str, Any]
AuthResponse = Dict[str, Any]
ApiResponse = Dict[str, Any]
ProgressCallback = Callable[[int, int], None]  # bytes_uploaded, total_bytes

# Type aliases for models
from .base.models import (
    LoginCredentials, PersistentLoginInfo, CloudFile, 
    AccountInfo, TrashItem
)

# Type aliases for exceptions
from .base.exceptions import (
    CloudStorageError, AuthException, FileNotFound, 
    InsufficientStorage, QuotaExceeded, NetworkError
)

# Type aliases for clients
from .base.client import CloudStorageClient

# Type aliases for providers
ProviderName = str
SupportedProviders = List[ProviderName]